home *** CD-ROM | disk | FTP | other *** search
/ Run Magazine ReRun 1989 Special Issue / rerun-1989-special-issue.d64 / irq source#5 < prev    next >
Text File  |  2022-09-20  |  2KB  |  51 lines

  1. ;NMI ROUTINE DEMO
  2. ;USING TIMERS A & B OF CIA2
  3. ;
  4. EXP
  5.       LDA #<NEWNMI        ;Change RAM NMI Vector
  6.       STA $0318
  7.       LDA #>NEWNMI
  8.       STA $0319
  9.       LDA #$FF            ;Set up CIA2 registers
  10.       STA $DD04           ;Timer A LO
  11.       STA $DD05           ;Timer A HI
  12.       LDA #$2F
  13.       STA $DD06           ;Timer B LO
  14.       LDA #$00
  15.       STA $DD07           ;Timer B HI
  16.       LDA #$51
  17.       STA $DD0F           ;CRB - Timer B counts Timer A
  18.       LDA #$11
  19.       STA $DD0E           ;CRA - Timer A counts clock cycles
  20.       LDA #$82
  21.       STA $DD0D           ;ICR - Enable Timer B interrupts
  22.       RTS
  23. NEWNMI
  24.       SEI                 ;New NMI routine: Set
  25.                           ;interrupt disable
  26.       PHA                 ;Save Registers .A, .X, ,
  27.                           ;and .Y to stack
  28.       TXA
  29.       PHA
  30.       TYA
  31.       PHA
  32.       LDA $DD0D           ;Check ICR to see if interrupt
  33.                           ;is from CIA2
  34.       BPL RESTORE         ;If not got to KERNAL routine
  35.       LDY #$0F            ;Rotate direction vectors of the balls
  36.       LDX #$0E
  37.       LDA $C0D7           ;Save last value to stack
  38.       PHA
  39. DLOOP
  40.       LDA SD,X            ;Push other values up one
  41.       STA SD,Y
  42.       DEY                 ;Do next value
  43.       DEX
  44.       BPL DLOOP           ;Check if done
  45.       PLA                 ;Get last value from stack
  46.       STA SD              ;Put at the beginning
  47.       JMP $FEBC           ;Jump out through KERNAL NMI exit
  48. RESTORE
  49.       JMP $FE4C           ;Jump to RESTORE key routine
  50.  
  51.